/**
 * 这里仅放子工程的 util 代码
 */

export const getUUID = function() {
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
    const r = (Math.random() * 16) | 0;
    const v = c === "x" ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
};

export const on = (function() {
  if (document.addEventListener) {
    return function(element, event, handler) {
      if (element && event && handler) {
        element.addEventListener(event, handler, false);
      }
    };
  } else {
    return function(element, event, handler) {
      if (element && event && handler) {
        element.attachEvent("on" + event, handler);
      }
    };
  }
})();

export function validateMobile (rule, value, callback) {
  const areaCodeList = [
    {
      // Mainland China
        code: "86",
        reg: "^(86){0,1}1\\d{10}$"
      },
      {
        // Hong Kong(China)
        code: "852",
        // reg: "^(00){0,1}(852){1}0{0,1}[1,5,6,9](?:\\d{7}|\\d{8}|\\d{12})$"
        reg: "^(00){0,1}(852){0,1}0{0,1}[1,5,6,9](?:\\d{7}|\\d{8}|\\d{12})$"
      },
      {
      // Macao(China)
        code: "853",
        reg: "^(00){0,1}(853){1}6\\d{7}$"
      },
      {
      // Taiwan(China)
        code: "886",
        reg: "^(00){0,1}(886){1}0{0,1}[6,7,9](?:\\d{7}|\\d{8}|\\d{10})$"
      },
      {
      // Thailand
        code: "66",
        reg: "^(00){0,1}(66){1}[13456789]\\d{7,8}$"
      },
      // {
      // // Malaysia
      //   code: "60",
      //   reg: "^(00){0,1}(60){1}1\\d{8,9}$"
      // },
      // {
      // // Singapore
      //   code: "65",
      //   reg: "^(00){0,1}(65){1}[13689]\\d{6,7}$"
      // },
      // {
      // // Japan
      //   code: "81",
      //   reg: "^(00){0,1}(81){1}0{0,1}[7,8,9](?:\\d{8}|\\d{9})$"
      // },
      // {
      // // Korea
      //   code: "82",
      //   reg: "^(00){0,1}(82){1}0{0,1}[7,1](?:\\d{8}|\\d{9})$"
      // },
      // {
      // // United States of America
      //   code: "1",
      //   reg: "^(00){0,1}(1){1}\\d{10,12}$"
      // },
      // {
      // // Canada
      //   code: "1",
      //   reg: "^(00){0,1}(1){1}\\d{10}$"
      // },
      // {
      // // Australia
      //   code: "61",
      //   reg: "^(00){0,1}(61){1}4\\d{8,9}$"
      // },
      // {
      // // New Zealand
      //   code: "64",
      //   reg: "^(00){0,1}(64){1}[278]\\d{7,9}$"
      // },
      // {
      // // Albania
      //   code: "355",
      //   reg: "^(00){0,1}(355){1}\\d{6,15}$"
      // },
      // {
      // // Angola
      //   code: "244",
      //   reg: "^(00){0,1}(244){1}\\d{6,15}$"
      // },
      // {
      // // Argentina
      //   code: "54",
      //   reg: "^(00){0,1}(54){1}\\d{6,12}$"
      // },
      // {
      // // Austria
      //   code: "43",
      //   reg: "^(00){0,1}(43){1}\\d{6,12}$"
      // },
      // {
      // // Azerbaijan
      //   code: "994",
      //   reg: "^(00){0,1}(994){1}\\d{6,15}$"
      // },
      // {
      // // Bahamas
      //   code: "1242",
      //   reg: "^(00){0,1}(1242){1}\\d{6,12}$"
      // },
      // {
      // // Bahrain
      //   code: "973",
      //   reg: "^(00){0,1}(973){1}\\d{6,15}$"
      // },
      // {
      // // Belarus
      //   code: "375",
      //   reg: "^(00){0,1}(375){1}\\d{6,12}$"
      // },
      // {
      // // Belgium
      //   code: "32",
      //   reg: "^(00){0,1}(32){1}\\d{6,12}$"
      // },
      // {
      // // Belize
      //   code: "501",
      //   reg: "^(00){0,1}(501){1}\\d{6,12}$"
      // },
      // {
      // // Benin
      //   code: "229",
      //   reg: "^(00){0,1}(229){1}\\d{6,15}$"
      // },
      // {
      // // Bolivia
      //   code: "591",
      //   reg: "^(00){0,1}(591){1}\\d{6,15}$"
      // },
      // {
      // // Brazil
      //   code: "55",
      //   reg: "^(00){0,1}(55){1}\\d{6,12}$"
      // },
      // {
      // // Brunei
      //   code: "673",
      //   reg: "^(00){0,1}(673){1}\\d{6,15}$"
      // },
      // {
      // // Bulgaria
      //   code: "359",
      //   reg: "^(00){0,1}(359){1}\\d{6,12}$"
      // },
      // {
      // // Burkina Faso
      //   code: "226",
      //   reg: "^(00){0,1}(226){1}\\d{6,15}$"
      // },
      // {
      // // Cambodia
      //   code: "855",
      //   reg: "^(00){0,1}(855){1}\\d{6,12}$"
      // },
      // {
      // // Cameroon
      //   code: "237",
      //   reg: "^(00){0,1}(237){1}\\d{6,15}$"
      // },
      // {
      // // Cape Verde
      //   code: "238",
      //   reg: "^(00){0,1}(238){1}\\d{6,15}$"
      // },
      // {
      // // Cayman Islands
      //   code: "1345",
      //   reg: "^(00){0,1}(1345){1}\\d{6,15}$"
      // },
      // {
      // // Chad
      //   code: "235",
      //   reg: "^(00){0,1}(235){1}\\d{6,15}$"
      // },
      // {
      // // Chile
      //   code: "56",
      //   reg: "^(00){0,1}(56){1}\\d{6,12}$"
      // },
      // {
      // // Colombia
      //   code: "57",
      //   reg: "^(00){0,1}(57){1}\\d{6,12}$"
      // },
      // {
      // // Comoros
      //   code: "269",
      //   reg: "^(00){0,1}(269){1}\\d{6,15}$"
      // },
      // {
      // // Costa Rica
      //   code: "506",
      //   reg: "^(00){0,1}(506){1}\\d{6,15}$"
      // },
      // {
      // // Croatia
      //   code: "385",
      //   reg: "^(00){0,1}(385){1}\\d{6,15}$"
      // },
      // {
      // // Cyprus
      //   code: "357",
      //   reg: "^(00){0,1}(357){1}\\d{6,15}$"
      // },
      // {
      // // Denmark
      //   code: "45",
      //   reg: "^(00){0,1}(45){1}\\d{6,12}$"
      // },
      // {
      // // Djibouti
      //   code: "253",
      //   reg: "^(00){0,1}(253){1}\\d{6,15}$"
      // },
      // {
      // // Egypt
      //   code: "20",
      //   reg: "^(00){0,1}(20){1}\\d{6,12}$"
      // },
      // {
      // // El Salvador
      //   code: "503",
      //   reg: "^(00){0,1}(503){1}\\d{6,15}$"
      // },
      // {
      // // Equatorial Guinea
      //   code: "240",
      //   reg: "^(00){0,1}(240){1}\\d{6,15}$"
      // },
      // {
      // // Estonia
      //   code: "372",
      //   reg: "^(00){0,1}(372){1}\\d{6,12}$"
      // },
      // {
      // // Finland
      //   code: "358",
      //   reg: "^(00){0,1}(358){1}\\d{6,12}$"
      // },
      // {
      // // France
      //   code: "33",
      //   reg: "^(00){0,1}(33){1}(\\d{6}|\\d{8,9})$"
      // },
      // {
      // // Gabon
      //   code: "241",
      //   reg: "^(00){0,1}(241){1}\\d{6,15}$"
      // },
      // {
      // // Gambia
      //   code: "220",
      //   reg: "^(00){0,1}(220){1}\\d{6,15}$"
      // },
      // {
      // // Georgia
      //   code: "995",
      //   reg: "^(00){0,1}(995){1}\\d{6,15}$"
      // },
      // {
      // // Germany
      //   code: "49",
      //   reg: "^(00){0,1}(49){1}1(\\d{5,6}|\\d{9,12})$"
      // },
      // {
      // // Greece
      //   code: "30",
      //   reg: "^(00){0,1}(30){1}\\d{6,12}$"
      // },
      // {
      // // Grenada
      //   code: "1473",
      //   reg: "^(00){0,1}(1473){1}\\d{6,15}$"
      // },
      // {
      // // Guatemala
      //   code: "502",
      //   reg: "^(00){0,1}(502){1}\\d{6,15}$"
      // },
      // {
      // // Guinea
      //   code: "224",
      //   reg: "^(00){0,1}(224){1}\\d{6,15}$"
      // },
      // {
      // // Guinea-Bissau
      //   code: "245",
      //   reg: "^(00){0,1}(245){1}\\d{6,15}$"
      // },
      // {
      // // Guyana
      //   code: "592",
      //   reg: "^(00){0,1}(592){1}\\d{6,15}$"
      // },
      // {
      // // Honduras
      //   code: "504",
      //   reg: "^(00){0,1}(504){1}\\d{6,15}$"
      // },
      // {
      // // Hungary
      //   code: "36",
      //   reg: "^(00){0,1}(36){1}\\d{6,12}$"
      // },
      // {
      // // India
      //   code: "91",
      //   reg: "^(00){0,1}(91){1}\\d{6,12}$"
      // },
      // {
      // // Indonesia
      //   code: "62",
      //   reg: "^(00){0,1}(62){1}[2-9]\\d{7,11}$"
      // },
      // {
      // // Ireland
      //   code: "353",
      //   reg: "^(00){0,1}(353){1}\\d{6,12}$"
      // },
      // {
      // // Israel
      //   code: "972",
      //   reg: "^(00){0,1}(972){1}\\d{6,12}$"
      // },
      // {
      // // Italy
      //   code: "39",
      //   reg: "^(00){0,1}(39){1}[37]\\d{8,11}$"
      // },
      // {
      // // Jamaica
      //   code: "1876",
      //   reg: "^(00){0,1}(1876){1}\\d{6,15}$"
      // },
      // {
      // // Jordan
      //   code: "962",
      //   reg: "^(00){0,1}(962){1}\\d{6,12}$"
      // },
      // {
      // // Kenya
      //   code: "254",
      //   reg: "^(00){0,1}(254){1}\\d{6,15}$"
      // },
      // {
      // // Kuwait
      //   code: "965",
      //   reg: "^(00){0,1}(965){1}\\d{6,15}$"
      // },
      // {
      // // Kyrgyzstan
      //   code: "996",
      //   reg: "^(00){0,1}(996){1}\\d{6,12}$"
      // },
      // {
      // // Latvia
      //   code: "371",
      //   reg: "^(00){0,1}(371){1}\\d{6,15}$"
      // },
      // {
      // // Lesotho
      //   code: "266",
      //   reg: "^(00){0,1}(266){1}\\d{6,15}$"
      // },
      // {
      // // Lithuania
      //   code: "370",
      //   reg: "^(00){0,1}(370){1}\\d{6,12}$"
      // },
      // {
      // // Luxembourg
      //   code: "352",
      //   reg: "^(00){0,1}(352){1}\\d{6,12}$"
      // },
      // {
      // // Madagascar
      //   code: "261",
      //   reg: "^(00){0,1}(261){1}\\d{6,15}$"
      // },
      // {
      // // Malawi
      //   code: "265",
      //   reg: "^(00){0,1}(265){1}\\d{6,15}$"
      // },
      // {
      // // Maldives
      //   code: "960",
      //   reg: "^(00){0,1}(960){1}\\d{6,12}$"
      // },
      // {
      // // Mali
      //   code: "223",
      //   reg: "^(00){0,1}(223){1}\\d{6,15}$"
      // },
      // {
      // // Mauritania
      //   code: "222",
      //   reg: "^(00){0,1}(222){1}\\d{6,15}$"
      // },
      // {
      // // Mauritius
      //   code: "230",
      //   reg: "^(00){0,1}(230){1}\\d{6,15}$"
      // },
      // {
      // // Mexico
      //   code: "52",
      //   reg: "^(00){0,1}(52){1}\\d{6,12}$"
      // },
      // {
      // // Moldova
      //   code: "373",
      //   reg: "^(00){0,1}(373){1}\\d{6,15}$"
      // },
      // {
      // // Mongolia
      //   code: "976",
      //   reg: "^(00){0,1}(976){1}\\d{6,12}$"
      // },
      // {
      // // Morocco
      //   code: "212",
      //   reg: "^(00){0,1}(212){1}\\d{6,12}$"
      // },
      // {
      // // Mozambique
      //   code: "258",
      //   reg: "^(00){0,1}(258){1}\\d{6,15}$"
      // },
      // {
      // // Namibia
      //   code: "264",
      //   reg: "^(00){0,1}(264){1}\\d{6,15}$"
      // },
      // {
      // // Holland
      //   code: "31",
      //   reg: "^(00){0,1}(31){1}6\\d{8}$"
      // },
      // {
      // // Nicaragua
      //   code: "505",
      //   reg: "^(00){0,1}(505){1}\\d{6,15}$"
      // },
      // {
      // // Niger
      //   code: "227",
      //   reg: "^(00){0,1}(227){1}\\d{6,15}$"
      // },
      // {
      // // Nigeria
      //   code: "234",
      //   reg: "^(00){0,1}(234){1}\\d{6,12}$"
      // },
      // {
      // // Norway
      //   code: "47",
      //   reg: "^(00){0,1}(47){1}\\d{6,12}$"
      // },
      // {
      // // Oman
      //   code: "968",
      //   reg: "^(00){0,1}(968){1}\\d{6,15}$"
      // },
      // {
      // // Palestine
      //   code: "970",
      //   reg: "^(00){0,1}(970){1}\\d{6,15}$"
      // },
      // {
      // // Panama
      //   code: "507",
      //   reg: "^(00){0,1}(507){1}\\d{6,12}$"
      // },
      // {
      // // Papua New Guinea
      //   code: "675",
      //   reg: "^(00){0,1}(675){1}\\d{6,15}$"
      // },
      // {
      // // Peru
      //   code: "51",
      //   reg: "^(00){0,1}(51){1}\\d{6,12}$"
      // },
      // {
      // // Philippines
      //   code: "63",
      //   reg: "^(00){0,1}(63){1}[24579](\\d{7,9}|\\d{12})$"
      // },
      // {
      // // Poland
      //   code: "48",
      //   reg: "^(00){0,1}(48){1}\\d{6,12}$"
      // },
      // {
      // // Portugal
      //   code: "351",
      //   reg: "^(00){0,1}(351){1}\\d{6,12}$"
      // },
      // {
      // // Qatar
      //   code: "974",
      //   reg: "^(00){0,1}(974){1}\\d{6,12}$"
      // },
      // {
      // // Romania
      //   code: "40",
      //   reg: "^(00){0,1}(40){1}\\d{6,12}$"
      // },
      // {
      // // Russia
      //   code: "7",
      //   reg: "^(00){0,1}(7){1}[13489]\\d{9,11}$"
      // },
      // {
      // // Rwanda
      //   code: "250",
      //   reg: "^(00){0,1}(250){1}\\d{6,15}$"
      // },
      // {
      // // Saudi Arabia
      //   code: "966",
      //   reg: "^(00){0,1}(966){1}\\d{6,12}$"
      // },
      // {
      // // Senegal
      //   code: "221",
      //   reg: "^(00){0,1}(221){1}\\d{6,15}$"
      // },
      // {
      // // Serbia
      //   code: "381",
      //   reg: "^(00){0,1}(381){1}\\d{6,12}$"
      // },
      // {
      // // Seychelles
      //   code: "248",
      //   reg: "^(00){0,1}(248){1}\\d{6,12}$"
      // },
      // {
      // // Sierra Leone
      //   code: "232",
      //   reg: "^(00){0,1}(232){1}\\d{6,15}$"
      // },
      // {
      // // Slovakia
      //   code: "421",
      //   reg: "^(00){0,1}(421){1}\\d{6,15}$"
      // },
      // {
      // // Slovenia
      //   code: "386",
      //   reg: "^(00){0,1}(386){1}\\d{6,15}$"
      // },
      // {
      // // South Africa
      //   code: "27",
      //   reg: "^(00){0,1}(27){1}\\d{6,12}$"
      // },
      // {
      // // Spain
      //   code: "34",
      //   reg: "^(00){0,1}(34){1}\\d{6,12}$"
      // },
      // {
      // // Sri Lanka
      //   code: "94",
      //   reg: "^(00){0,1}(94){1}\\d{6,12}$"
      // },
      // {
      // // Suriname
      //   code: "597",
      //   reg: "^(00){0,1}(597){1}\\d{6,15}$"
      // },
      // {
      // // Swaziland
      //   code: "268",
      //   reg: "^(00){0,1}(268){1}\\d{6,15}$"
      // },
      // {
      // // Sweden
      //   code: "46",
      //   reg: "^(00){0,1}(46){1}[124-7](\\d{8}|\\d{10}|\\d{12})$"
      // },
      // {
      // // Switzerland
      //   code: "41",
      //   reg: "^(00){0,1}(41){1}\\d{6,12}$"
      // },
      // {
      // // Tajikistan
      //   code: "992",
      //   reg: "^(00){0,1}(992){1}\\d{6,15}$"
      // },
      // {
      // // Tanzania
      //   code: "255",
      //   reg: "^(00){0,1}(255){1}\\d{6,15}$"
      // },
      // {
      // // Togo
      //   code: "228",
      //   reg: "^(00){0,1}(228){1}\\d{6,15}$"
      // },
      // {
      // // Trinidad & Tobago
      //   code: "1868",
      //   reg: "^(00){0,1}(1868){1}\\d{6,15}$"
      // },
      // {
      // // Tunisia
      //   code: "216",
      //   reg: "^(00){0,1}(216){1}\\d{6,12}$"
      // },
      // {
      // // Turkey
      //   code: "90",
      //   reg: "^(00){0,1}(90){1}\\d{6,12}$"
      // },
      // {
      // // Turkmenistan
      //   code: "993",
      //   reg: "^(00){0,1}(993){1}\\d{6,15}$"
      // },
      // {
      // // Uganda
      //   code: "256",
      //   reg: "^(00){0,1}(256){1}\\d{6,15}$"
      // },
      // {
      // // Ukraine
      //   code: "380",
      //   reg: "^(00){0,1}(380){1}[3-79]\\d{8,9}$"
      // },
      // {
      // // United Arab Emirates
      //   code: "971",
      //   reg: "^(00){0,1}(971){1}\\d{6,12}$"
      // },
      // {
      // // United Kingdom
      //   code: "44",
      //   reg: "^(00){0,1}(44){1}[347-9](\\d{8,9}|\\d{11,12})$"
      // },
      // {
      // // Uruguay
      //   code: "598",
      //   reg: "^(00){0,1}(598){1}\\d{6,15}$"
      // },
      // {
      // // Uzbekistan
      //   code: "998",
      //   reg: "^(00){0,1}(998){1}\\d{6,15}$"
      // },
      // {
      // // Venezuela
      //   code: "58",
      //   reg: "^(00){0,1}(58){1}\\d{6,12}$"
      // },
      // {
      // // Vietnam
      //   code: "84",
      //   reg: "^(00){0,1}(84){1}[1-9]\\d{6,9}$"
      // },
      // {
      // // Virgin Islands, British
      //   code: "1284",
      //   reg: "^(00){0,1}(1284){1}\\d{6,12}$"
      // },
      // {
      // // Yemen
      //   code: "967",
      //   reg: "^(00){0,1}(967){1}\\d{6,15}$"
      // },
      // {
      // // Zambia
      //   code: "260",
      //   reg: "^(00){0,1}(260){1}\\d{6,15}$"
      // },
      // {
      // // Zimbabwe
      //   code: "263",
      //   reg: "^(00){0,1}(263){1}\\d{6,15}$"
      // },
  ]
  let _flag = false
    for (let i = 0; i < areaCodeList.length; i++) {
      const element = areaCodeList[i];
      const reg = new RegExp(element.reg);
      if (reg.test(value)) {
        _flag = true
        break;
      }
    }
    if (_flag) {
      callback();
    } else {
      callback(this.$t("module.userManage.warning.enterCorrectTel"));
    }
  // if (value.length === 0) {
  //   callback(new Error(this.$t("module.userManage.warning.enterCellPhoneNumber")));
  // } else {
  //   let _flag = false
  //   for (let i = 0; i < areaCodeList.length; i++) {
  //     const element = areaCodeList[i];
  //     const reg = new RegExp(element.reg);
  //     if (reg.test(value)) {
  //       _flag = true
  //       break;
  //     }
  //   }
  //   if (_flag) {
  //     callback();
  //   } else {
  //     callback(this.$t("module.userManage.warning.enterCorrectTel"));
  //   }
  // }
}